Consumer electronic devices, such as cellular telephones, digital music players, thumb drives and other handheld devices, execute increasingly complicated algorithms, such as algorithms for decoding compressed digital audio and video data and user interface algorithms. As the complexity of these algorithms increases, so does the memory usage for storing such algorithms.
Increasingly, manufacturers are turning to non-volatile memory devices, such as flash memory devices including NAND flash and NOR flash memory devices. Typically, non-volatile memory devices store data in logical units, such as memory pages and memory blocks. A set of memory pages form a memory block. Often, data is written to a page and may be read from locations within that page. Typically, a block is the smallest amount of data that may be erased.
Accessing and storing data on non-volatile memory devices, such as flash memory, may utilize virtual addressing. Non-volatile memory devices tend to wear with use and, as such, sectors within a non-volatile memory device may lose the capacity to store error free data. To reduce the problem of memory wear, microcontrollers may use “update” sectors of the memory. For example, when data is provided to a flash memory device it may be stored in a first block and when the data is updated the microcontroller may store the data in an update block, reducing wear on the first block. However, if the update sector is written too frequently, undesirable wear on the update block can result. As such, there is a need for an improved system and method for utilizing non-volatile memory.